PHP werken met formulieren $_GET en $_POST
$_GET
and $_POST
kan je de gegevens, die de gebruiker in een formulier heeft ingetypt, ophalen.Wat gaat er hieraan vooraf?
Formuliergegevens verwerken met PHP
Als de gebruiker op de Insert knop klikt worden de ingevoerde gegevens verzonden naar een PHP bestand met de naam visualiseren-form-data
.php
. De formuliergegevens worden met de HTPP POST methode verstuurd. Je kan dat visualiseren in de browser:
We wijzigen het action
attribuut van het form element en geven er de waarde aan visualiseren-form-data
.php
.
<body>
<h1>PHP Formulier voorbeeld tweede versie</h1>
<p><span class="error">* verplicht veld</span></p>
<form method="post" action="visualiseren-form-data.php
">
...
</form>
</body>
We maken de visualiseren-form-data.php pagina om te begrijpen hoe PHP de form data (Chrome) of parameters (Firefox) uit de header haalt en intern voorstelt. PHP gebruikt de superglobals $_GET
en $_POST
om de form data in op te slaan. Biede zijn arrays en hun namen beginnen met een $. In PHP moeten alle variabelen - en array's zijn ook variabelen - beginnen met een $-teken. Beide arrays zijn een ééndimensionele associatieve array of ook wel dictionary genoemd. Om een element uit een associative array op te halen gebruik je als index de waarde die je hebt toegekend aan het name
attribuut van het input
element in HTML. Dit retourneert dan de waarde van het value
attribuut van de input
HTML elementen.
Om een visuele voorstelling te krijgen van hoe een associative array of dictionary eruit ziet kan je de array weergeven met de var_dump of met de print_r ingebouwde PHP functie.
Typ de volgende code in het visualiseren-form-data
.php bestand:
<!DOCTYPE html> <html> <head> <title>PHP formulier werken met PHP</title> <meta charset="utf-8" /> <meta name="application-name" content="PHP form"> <meta name="description" content="Formulieren html en PHP"> <meta name="keywords" content="HTML, CSS, PHP"> <meta name="author" content="Jef Inghelbrecht"> </head> <body> </body> <p>Visuele voorstelling van een associatieve array of dictionary in PHP</p> <p><?php echo var_dump($_POST); ?></p> <p><?php echo print_r($_POST); ?></p> </html>
Selecteer nu het bestand form-html-tweede-versie.html, rechterklik erop en vervolgens op run. Vul minstens de gebruikersnaam en het emailadres in en klik op Insert:
We gaan nu PHP code schrijven om weer te geven wat de gebruiker ingetypt heeft. Daarvoor hebben we de ingebouwde isset
functie nodig. Met de isset
functie kan je testen als een bepaalde variable bestaat en niet gelijk is aan NULL
. Dat is nodig omdat de gebruiker niet altijd alle inputvelden heeft ingevuld. Vooraleer de in PHP de variabele te gebruiken is het daarom aangewezen eerst te testen als de variabele wel bestaat en niet gelijk is aan NULL
. Verder maken we gebruik van de immediate if expressie in PHP ook wel de ternary operator genoemd omdat de expressie uit drie delen bestaat:
- een logische expressie;
- code die wordt uitgevoerd als de logische expressie waar is;
- code die wordt uitgevoerd als de logische expressie onwaar is;
/* elementair voorbeeld */ $var = 10; $varIsGroterDanTwee = ($var > 2 ? true : false); // returns true
Om weer te geven wat de bezoeker heeft ingevuld maak je een nieuwe PHP pagina met de naam welkom.php en je voegt de volgende code toe:
<article> <ol> <li>Gebruikersnaam: <?php echo isset($_POST['name']) ? $_POST['name'] : 'Naam niet opgegeven!'; ?> </li> <li>E-mail adres: <?php echo isset($_POST['email']) ? $_POST['email'] : 'E-mailadres niet opgegeven!'; ?> </li> <li>Website: <?php echo isset($_POST['website']) ? $_POST['website'] : 'Website niet opgegeven!'; ?> </li> <li>Commentaar: <?php echo isset($_POST['comment']) ? $_POST['comment'] : 'Commentaar niet opgegeven!'; ?> </li> <li>Hoe ben je op deze website gekomen: <ol> <li> <?php echo isset($_POST['refer-random']) ? $_POST['refer-random'] : 'Toeval niet aangevinkt!'; ?> </li> <li> <?php echo isset($_POST['refer-friend']) ? $_POST['refer-friend'] : 'Vriend niet aangevinkt!'; ?> </li> <li> <?php echo isset($_POST['refer-search-engine']) ? $_POST['refer-search-engine'] : 'Zoekmachine niet aangevinkt!'; ?> </li> </ol> </li> <li>Wat vind je van onze site? <?php echo isset($_POST['rating']) ? $_POST['name'] : 'Geen rating opgegeven!'; ?> </li> <li>Je woont in <?php echo isset($_POST['country']) ? $_POST['country'] : 'land niet opgegeven!'; ?> </li> </ol> </article>
We wijzigen het action
attribuut van het form element en geven er de waarde aan welkom
.php
.
<body>
<h1>PHP Formulier voorbeeld tweede versie</h1>
<p><span class="error">* verplicht veld</span></p>
<form method="post" action="welkom.php
">
...
</form>
</body>
Als de PHP pagina runt krijg je het volgende resultaat: